package org.jeecg.common.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.common.aspect.annotation.Dict;
import org.jeecgframework.poi.excel.annotation.Excel;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.util.Date;

/**
 * @Description: hs_person
 * @Author: 国子软件
 * @Date:   2022-05-06
 * @Version: V1.0
 */
@Data
@TableName("hs_person")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="人员信息对象", description="人员信息对象")
public class HsPerson implements Serializable {
    private static final long serialVersionUID = 1L;

	/**序号*/
	@TableId(type = IdType.ASSIGN_ID)
    @ApiModelProperty(value = "序号")
    private String id;
	/**租户编号*/
	@Excel(name = "租户编号", width = 15)
    @ApiModelProperty(value = "租户编号")
    private String tenantId;
	/**员工编号*/
	@Excel(name = "员工编号", width = 15)
    @ApiModelProperty(value = "员工编号")
    private String code;
	/**姓名*/
	@Excel(name = "姓名(必填)", width = 15)
    @ApiModelProperty(value = "姓名")
    private String name;
	/**证件类型(外键)*/
	@Excel(name = "证件类型(必填)", width = 15, dicCode = "hs_certificates_type")
    @ApiModelProperty(value = "证件类型(外键)")
    @Dict(dicCode = "hs_certificates_type")
    private String baseinfoPersonDocumentTypeId;
	/**证件号*/
	@Excel(name = "证件号(必填)", width = 15)
    @ApiModelProperty(value = "证件号")
    private String documentCode;
	/**性别(外键)*/
	@Excel(name = "性别(必填)", width = 15, dicCode = "person_sex")
	@Dict(dicCode = "person_sex")
    @ApiModelProperty(value = "性别(外键)")
    private String baseinfoPersonSexId;
	/**出生日期*/
	@Excel(name = "出生日期(必填)", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "出生日期")
    private Date birthday;
	/**民族(外键)*/
	@Excel(name = "民族(必填)", width = 15, dicCode = "national")
    @ApiModelProperty(value = "民族(外键)")
    @Dict(dicCode = "national")
    private String baseinfoPersonNationId;
	/**政治面貌(外键)*/
	@Excel(name = "政治面貌(外键)", width = 15)
    @ApiModelProperty(value = "政治面貌(外键)")
    private String baseinfoPersonPoliticalStatusId;
	/**国籍(外键)*/
	@Excel(name = "国籍(外键)", width = 15, dicCode = "nationality")
    @ApiModelProperty(value = "国籍(外键)")
    @Dict(dicCode = "nationality")
    private String baseinfoPersonCountryId;
	/**籍贯*/
	@Excel(name = "籍贯", width = 15)
    @ApiModelProperty(value = "籍贯")
    private String nativePlace;
	/**户籍所在地*/
	@Excel(name = "户籍所在地", width = 15)
    @ApiModelProperty(value = "户籍所在地")
    private String domicile;
	/**婚姻状态(外键)*/
	@Excel(name = "婚姻状态(必填)", width = 15, dicCode = "baseinfo_person_marriage_status")
    @ApiModelProperty(value = "婚姻状态(外键)")
    @Dict(dicCode = "baseinfo_person_marriage_status")
    private String baseinfoPersonMarriageStatusId;
	/**健康状况*/
	@Excel(name = "健康状况", width = 15)
    @ApiModelProperty(value = "健康状况")
    private String healthCondition;
	/**单位编码(外键)*/
	@Excel(name = "单位编码(外键)", width = 15)
    @ApiModelProperty(value = "单位编码(外键)")
    @Dict(dicCode = "id",dictTable="hs_unit",dicText="name", dictHouse = "house")
    private String baseinfoUnitId;
	/**baseinfoUnitName*/
	@Excel(name = "baseinfoUnitName", width = 15)
    @ApiModelProperty(value = "baseinfoUnitName")
    private String baseinfoUnitName;
	/**最高学历(外键)*/
	@Excel(name = "最高学历(外键)", width = 15)
    @ApiModelProperty(value = "最高学历(外键)")
    private String baseinfoPersonHighestEducationId;
	/**最高学位(外键)*/
	@Excel(name = "最高学位(外键)", width = 15)
    @ApiModelProperty(value = "最高学位(外键)")
    private String baseinfoPersonHighestDegreeId;
	/**专业技术职务*/
	@Excel(name = "专业技术职务", width = 15)
    @ApiModelProperty(value = "专业技术职务")
    private String professionalPosition;
	/**职业资格*/
	@Excel(name = "职业资格", width = 15)
    @ApiModelProperty(value = "职业资格")
    private String professionalQualification;
	/**参加工作时间*/
	@Excel(name = "参加工作时间", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "参加工作时间")
    private Date workStart;
	/**联系电话*/
	@Excel(name = "联系电话(必填)", width = 15)
    @ApiModelProperty(value = "联系电话")
    private String personalPhone;
	/**电子邮件*/
	@Excel(name = "电子邮件", width = 15)
    @ApiModelProperty(value = "电子邮件")
    private String email;
	/**工作电话*/
	@Excel(name = "工作电话", width = 15)
    @ApiModelProperty(value = "工作电话")
    private String workPhone;
	/**家庭住址*/
	@Excel(name = "家庭住址", width = 15)
    @ApiModelProperty(value = "家庭住址")
    private String address;
	/**出生地*/
	@Excel(name = "出生地", width = 15)
    @ApiModelProperty(value = "出生地")
    private String birthplace;
	/**入党时间*/
	@Excel(name = "入党时间", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "入党时间")
    private Date joinPartyTime;
	/**紧急联系人*/
	@Excel(name = "紧急联系人(必填)", width = 15)
    @ApiModelProperty(value = "紧急联系人")
    private String emergencyPerson;
	/**紧急联系人电话*/
	@Excel(name = "紧急联系人电话(必填)", width = 15)
    @ApiModelProperty(value = "紧急联系人电话")
    private String emergencyWay;
	/**本单位入职时间*/
	@Excel(name = "本单位入职时间", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "本单位入职时间")
    private Date thisUnitEntryTime;
	/**部门编码(外键)*/
	@Excel(name = "部门编码(外键)", width = 15)
    @ApiModelProperty(value = "部门编码(外键)")
    @Dict(dicCode = "id",dictTable="hs_depart",dicText="dept_name", dictHouse = "house")
    private String baseinfoDeptId;
	/**部门名称*/
	@Excel(name = "部门名称", width = 15)
    @ApiModelProperty(value = "部门名称")
    private String departmentName;
	/**管理类别(外键)*/
	@Excel(name = "管理类别(外键)", width = 15)
    @ApiModelProperty(value = "管理类别(外键)")
    private String baseinfoPersonManagementTypeId;
	/**编制类型(外键)*/
	@Excel(name = "编制类型(外键)", width = 15)
    @ApiModelProperty(value = "编制类型(外键)")
    private String baseinfoPersonStaffingTypeId;
	/**人员类型(外键)*/
	@Excel(name = "人员类型(外键)", width = 15)
    @ApiModelProperty(value = "人员类型(外键)")
    private String baseinfoPersonPersonTypeId;

	/**人员类别(外键)*/
	@Excel(name = "人员类别(外键)", width = 15)
    @ApiModelProperty(value = "人员类别(外键)")
    private String baseinfoPersonPersonCategoryId;
	/**职务类别(外键)*/
	@Excel(name = "职务名称(外键)", width = 15, dicCode = "position_rank")
    @ApiModelProperty(value = "职务名称(外键)")
    @Dict(dicCode = "position_rank")
    private String baseinfoPersonPositionTypeId;
	/**职务名称(外键)*/
	@Excel(name = "职务类别(必填)", width = 15, dicCode = "position_rank")
    @ApiModelProperty(value = "职务类别(必填)")
    @Dict(dicCode = "position_rank")
    private String baseinfoPersonPositionId;
	/**职级(外键)*/
	@Excel(name = "职级(必填)", width = 15, dicCode = "position_level")
    @ApiModelProperty(value = "职级(外键)")
    @Dict(dicCode = "position_level")
    private String baseinfoPersonRankId;
	/**职等(外键)*/
	@Excel(name = "职等(外键)", width = 15)
    @ApiModelProperty(value = "职等(外键)")
    private String baseinfoPersonGradeId;
	/**异动事件(外键)*/
	@Excel(name = "异动事件(外键)", width = 15)
    @ApiModelProperty(value = "异动事件(外键)")
    private String baseinfoPersonUnusualtransferId;
	/**异动类型(外键)*/
	@Excel(name = "异动类型(外键)", width = 15)
    @ApiModelProperty(value = "异动类型(外键)")
    private String baseinfoPersonUnusualtransferTypeId;
	/**异动原因*/
	@Excel(name = "异动原因", width = 15)
    @ApiModelProperty(value = "异动原因")
    private String unusualtransferReason;
	/**人才类别*/
	@Excel(name = "人才类别", width = 15)
    @ApiModelProperty(value = "人才类别")
    private String talentType;
	/**合同期限*/
	@Excel(name = "合同期限", width = 15)
    @ApiModelProperty(value = "合同期限")
    private String contractPeriod;
	/**异动时间*/
	@Excel(name = "异动时间", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "异动时间")
    private Date unusualtransferTime;
	/**参加组织时间*/
	@Excel(name = "参加组织时间", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "参加组织时间")
    private Date jionOrganizationTime;
	/**对应类别(外键)*/
	@Excel(name = "对应类别(外键)", width = 15)
    @ApiModelProperty(value = "对应类别(外键)")
    private String baseinfoUnitCorrespondingCategoryId;
	/**人员状态(外键)*/
	@Excel(name = "人员状态(必填)", width = 15, dicCode = "hs_person_statusId")
    @ApiModelProperty(value = "人员状态(外键)")
    @Dict(dicCode = "hs_person_statusId")
    private String baseinfoPersonPersonStatusId;
	/**分配状态(反写)*/
	@Excel(name = "分配状态(反写)", width = 15, dicCode = "hs_distribution_status")
    @ApiModelProperty(value = "分配状态(反写)")
    @Dict(dicCode = "hs_distribution_status")
    private String distributionStatus;
	/**房屋名称(反写)*/
	@Excel(name = "房屋名称(反写)", width = 15)
    @ApiModelProperty(value = "房屋名称(反写)")
    @Dict(dicCode = "id", dictTable = "hs_basis_house", dicText = "house_name", dictHouse = "house")
    private String houseName;
	/**所在楼层(反写)*/
	@Excel(name = "所在楼层(反写)", width = 15)
    @ApiModelProperty(value = "所在楼层(反写)")
    @Dict(dicCode = "id", dictTable = "hs_basis_floor", dicText = "floor_name", dictHouse = "house")
    private String floor;
	/**房间号(反写)*/
	@Excel(name = "房间号(反写)", width = 15)
    @ApiModelProperty(value = "房间号(反写)")
    @Dict(dicCode = "id", dictTable = "hs_basics_room", dicText = "room_name", dictHouse = "house")
    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private String baseinfoRoomId;
	/**变更时间*/
	@Excel(name = "变更时间", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "变更时间")
    private Date changeTime;
	/**版本号*/
	@Excel(name = "版本号", width = 15)
    @ApiModelProperty(value = "版本号")
    private String versionNumber;
	/**注备*/
	@Excel(name = "注备", width = 15)
    @ApiModelProperty(value = "注备")
    private String remark;
	/**制单人*/
	@Excel(name = "制单人", width = 15)
    @ApiModelProperty(value = "制单人")
    private String maker;
	/**制单时间*/
	@Excel(name = "制单时间", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "制单时间")
    private Date makeOrderTime;
	/**最后修改人*/
	@Excel(name = "最后修改人", width = 15)
    @ApiModelProperty(value = "最后修改人")
    private String lastEditor;
	/**修改时间*/
	@Excel(name = "修改时间", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "修改时间")
    private Date modifiedTime;
	/**审批人*/
	@Excel(name = "审批人", width = 15)
    @ApiModelProperty(value = "审批人")
    private String approver;
	/**审批时间*/
	@Excel(name = "审批时间", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "审批时间")
    private Date approvalTime;
	/**审批状态*/
	@Excel(name = "审批状态", width = 15)
    @ApiModelProperty(value = "审批状态")
    private String approverStatus;
	/**创建人*/
	@Excel(name = "创建人", width = 15)
    @ApiModelProperty(value = "创建人")
    @Dict(dicCode = "id", dictTable = "blade_user", dicText = "name", dictHouse = "house")
    private String createUser;
	/**创建时间*/
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
	/**更新人*/
	@Excel(name = "更新人", width = 15)
    @ApiModelProperty(value = "更新人")
    @Dict(dicCode = "id", dictTable = "blade_user", dicText = "name", dictHouse = "house")
    private String updateUser;
	/**更新时间*/
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "更新时间")
    private Date updateTime;
	/**删除标注*/
	@Excel(name = "删除标注", width = 15)
    @ApiModelProperty(value = "删除标注")
    private String isDeleted;
	/**乐观锁字段*/
	@Excel(name = "乐观锁字段", width = 15)
    @ApiModelProperty(value = "乐观锁字段")
    private String tsVersion;
	/**状态*/
	@Excel(name = "状态", width = 15)
    @ApiModelProperty(value = "状态")
    private String status;
    /**配偶姓名*/
    @Excel(name = "配偶姓名(已婚必填)", width = 15)
    @ApiModelProperty(value = "配偶姓名")
    private String spouseName;
    /**配偶身份证*/
    @Excel(name = "配偶身份证(已婚必填)", width = 15)
    @ApiModelProperty(value = "配偶身份证")
    private String spouseIdCard;
    /**配偶电话*/
    @Excel(name = "配偶电话", width = 15)
    @ApiModelProperty(value = "配偶电话")
    private String spousePhone;
    /**配偶单位*/
    @Excel(name = "配偶单位", width = 15)
    @ApiModelProperty(value = "配偶单位")
    private String spouseUnit;
    /**配偶单位电话*/
    @Excel(name = "配偶单位电话", width = 15)
    @ApiModelProperty(value = "配偶单位电话")
    private String spouseUnitPhone;
    /**流程实例id*/
	@Excel(name = "流程实例id", width = 15)
    @ApiModelProperty(value = "流程实例id")
    private String processInstanceId;
	/**数据来源*/
	@Excel(name = "数据来源", width = 15)
    @ApiModelProperty(value = "数据来源")
    private String dataSource;
	/**外部来源主键*/
	@Excel(name = "外部来源主键", width = 15)
    @ApiModelProperty(value = "外部来源主键")
    private String pkId;
	/**人员状态*/
	@Excel(name = "人员状态", width = 15)
    @ApiModelProperty(value = "人员状态")
    private String personStatus;
	/**人员状态时间*/
	@Excel(name = "人员状态时间", width = 15, format = "yyyy-MM-dd")
	@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "人员状态时间")
    private Date personStatusDate;
	/**外部同步时间戳*/
	@Excel(name = "外部同步时间戳", width = 15)
    @ApiModelProperty(value = "外部同步时间戳")
    private String pkDate;
	/**面积标准*/
	@Excel(name = "面积标准", width = 15)
    @ApiModelProperty(value = "面积标准")
    private java.math.BigDecimal standardArea;
	/**批量提交单据id*/
	@Excel(name = "批量提交单据id", width = 15)
    @ApiModelProperty(value = "批量提交单据id")
    private String batchApprovalId;
	/**审批意见*/
	@Excel(name = "审批意见", width = 15)
    @ApiModelProperty(value = "审批意见")
    private String approvedOpinion;
}
